System emulators are commonly used to assist programmers in the development of software for various microprocessor and microcontroller based systems. Microcontrollers typically do not provide the degree of visibility or accessibility to the internal workings of its system that a microprocessor does. For example, a microcontroller may not present the data and addresses found on internal buses to the external pins of the device. However, such signals are important to a person designing software for such a system.
Further, even microprocessors may have some signals that are important to the software designer that are not provided to external pins. A good system emulator needs to provide the necessary signals to the designer. Typically, this is accomplished by using the actual microcontroller or microprocessor with additional on-chip circuitry or logic for performing the necessary emulation functions.
This on-chip emulation circuitry or logic assists with the integration of the circuitry on a chip into new systems by providing special emulation features that give powerful capabilities to the system designer for debugging application programs. However, these features are used only in a special test environment by the system designer. End users of the system do not normally require these features. Because of the cost penalties associated with the extra silicon area required to implement this emulation logic, any such emulation logic is normally not included in production chips.
Typically, emulation circuitry or logic works together with the production chip's control and/or signal logic or circuitry to produce the special debug features. The physical implementation of the emulation logic must be such that it can be removed without having a major impact on the mask geometries of the production chip logic; that is, physically removing the emulation logic must be accomplished in a manner that minimizes any redesign of the basic functional logic or circuitry. Typically the emulation logic is placed or contained in a self-contained module on a chip and wired to the rest of the chip. However, this still requires modification to the production chip logic wherever there are inputs from the emulation logic.
Since emulation signals don't exist when the emulation logic or circuitry is not present and/or connected, these signals must be tied off, or eliminated with new circuitry modifications in most design environments. However, when the production core is "touched" in any way, time consuming verification procedures must be implemented to re-verify the "modified" design.
Thus, there are still unmet needs for circuitry capable of automatically detecting the presence or absence of emulator circuitry and responding appropriately without modifying the design of a production core.